package br.com.imob.bo;

import java.util.List;

import br.com.imob.dao.EnderecoDao;
import br.com.imob.modelo.Bairro;
import br.com.imob.modelo.Cidade;
import br.com.imob.modelo.Endereco;

public class EnderecoBO {
	
	private EnderecoDao edao;
	private BairroBO bairroBO;
	private CidadeBO cidadeBO;
	private EstadoBO estadoBO;
	
	
	public EnderecoBO() { 
		setEdao(new EnderecoDao()); 
		setBairroBO(new BairroBO());
		setCidadeBO(new CidadeBO());
		setEstadoBO(new EstadoBO());
	}
	
	
//	CRUD
	public void adicionarEndereco( Endereco endereco ) {
		
		if ( endereco.getBairro().getBairro() != null 
				&&  endereco.getBairro().getCidade().getCidade() != null ) {
			
			Bairro bairro = getBairroBO().getBairroByCep( endereco.getBairro().getCep() );
			Cidade city = getCidadeBO().getCidadeByCidade( endereco.getBairro().getCidade().getCidade() );
			
			if ( city == null ) getCidadeBO().adicionarCidade( city );
			if ( bairro == null ) getBairroBO().adicionarBairro( bairro );
		}
		
		edao.adicionarEndereco( endereco );
	}
	
	public void removerEndereco( Endereco endereco ) {
		edao.removerEndereco(endereco);
	}
	
	public void atualizarEndereco( Endereco endereco ) {
		edao.atualizarEndereco(endereco);
	}
	
	public Endereco getEnderecoById( Integer key ) {
		return edao.getEndereco(key);
	}

	public List<Endereco> getAllEnderecos( ) {
		return edao.getEnderecos();
	}
//	Fim do CRUD 
	
	
//	Getts and Setts
	public void setEdao(EnderecoDao edao) { this.edao = edao; }
	public EnderecoDao getEdao() { return edao; }

	public void setBairroBO(BairroBO bairroBO) { this.bairroBO = bairroBO; }
	public BairroBO getBairroBO() { return bairroBO; }
	
	public void setCidadeBO(CidadeBO cidadeBO) { this.cidadeBO = cidadeBO; }
	public CidadeBO getCidadeBO() { return cidadeBO; }

	public void setEstadoBO(EstadoBO estadoBO) { this.estadoBO = estadoBO; }
	public EstadoBO getEstadoBO() { return estadoBO; }
	
}